package zyl.spring.boot.branch.test.lamdba;

import org.junit.Test;

/**
 * LambdaTest1类说明:lambda语法 Lambda允许把函数作为一个方法的参数传递进方法中
 *<p> 适用场景：在一个大块的共用逻辑中间，穿插一块非共用的逻辑，在java8之前也可以采用传入某个字段在适当位置通过switch语句进行区分</p>
 *<p> lambda可以应用到很多的业务场景中，本文只简要说明本人所遇到的业务场景 </p>
 *<p> 代码换环境执行一定要注意jdk的版本是否大于等于1.8</p>
 *
 * @author z.y.l
 * @version v1.0
 * @date 2020-09-15
 */
public class LambdaTest1 {
    /** 声明接口 */
    interface Executor{
        String execute(String arg);
    }
    /** 调用时需要传入代码块的方法 */
    private Object runExecute(Executor executor,String str){
        str += " .";
        //公用处理代码块，待填充
        System.out.println("runExecute (:"+str);
        return executor.execute(str);
    }
    /** 传入的代码块 */
    public static String getResult(String s){
        s += " o_o";
        System.out.println("getResult (:"+s);
        return s;
    }
    @Test
    public void test(){
        //参数
        String param = "zyl";
        System.out.println("test start (:"+param);
        // {}中的代码块相当于实现了上面定义的接口中的方法
        System.out.println(runExecute(LambdaTest1::getResult, param));
    }
}
